<?php
/**
 * ファイル用ユーティリティクラス.
 *
 * @n ファイル操作にまつわるユーティリティ系クラス.
 * @n ユーティリティ系クラスなので、全て.
 * @n [lib_file_util::メソッド]の形式でのcallを想定している.
 *
 * @date  yyyy/mm/dd
 * @author nagai
 * @version $Id: lib_file_util.php 4 2009-11-24 06:02:55Z tzr250rsp $
 **/
class lib_file_util {


  /**
   * ファイル書き込み.
   * @param string $filename
   * @param mixed $data
   * @return bool 失敗時 false
   */
  static public function writeFile($filename, $data, $mode='w'){
    $fp = @fopen($filename, $mode );
    if(!$fp) {
      //print "file open error!";
      return false;             // 終了
    }
    flock($fp, LOCK_EX);        // LOCK_EX => 排他ロック
    fwrite($fp, $data);
    fclose($fp);
    //
    return true;
  }


  /**
   * ファイル追加書き込み.
   * @param string $filename
   * @param mixed $data
   * @return bool 失敗時 false
   */
  static public function addFile($filename, $data){
    return lib_file_util::writeFile($filename, $data, 'a');
  }


  /**
   * ファイル名からのファイルの読み込み.
   * @param string $filename
   * @return string
   */
  static public function readFile($filename){
    $ret = "";
    //
    if ($fp = @fopen($filename, "r")) {
      // ファイルのopenに成功したら読み込む.
      while (!feof($fp)) {
        $ret .= fgets($fp);
      }
      @fclose($fp);
    }
    //
    return $ret;
  }


  /**
   * ファイルを読み込んでSJIS文字コードに変換してreturn.
   * @param string $filename
   * @return string
   */
  static public function readFileToSjis($filename){
    return  mb_convert_encoding(lib_file_util::readFile($filename) , "SJIS", "auto");
  }


  /**
   * ファイルを読み込んでEUC文字コードに変換してreturn.
   * @param string $filename
   * @return string
   */
  static public function readFileToEuc($filename){
    return  mb_convert_encoding(lib_file_util::readFile($filename) , "EUC-JP", "auto");
  }


  /**
   * ファイルを読み込んでUTF-8文字コードに変換してreturn.
   * @param string $filename
   * @return string
   */
  static public function readFileToUtf8($filename){
    return mb_convert_encoding(lib_file_util::readFile($filename) , "UTF-8", "auto");
  }


  /**
   * ファイルを読み込んでbase64にしてreturn.
   * @param string $filename
   * @return string
   */
  static public function readFileToBase64($filename){
    return base64_encode(lib_file_util::readFile($filename));
  }
}
//end of class

?>